//! 音乐相关字符集
//! 
//! 包含各种音乐符号、乐器、音符等相关的字符和图标

use std::collections::HashMap;
use crate::CharacterSet;

/// 获取音乐相关字符集
pub fn get_music_characters() -> HashMap<String, CharacterSet> {
    let mut characters = HashMap::new();

    // 基本音符
    characters.insert("music".to_string(),
        CharacterSet::new()
            .simple("♫")
            .icon("🎵")
            .bold("♫")
            .color("🎶")
    );

    characters.insert("note".to_string(),
        CharacterSet::new()
            .simple("♪")
            .icon("♪")
            .bold("♪")
    );

    characters.insert("notes".to_string(),
        CharacterSet::new()
            .simple("♫")
            .icon("🎵")
            .bold("♫")
            .color("🎶")
    );

    characters.insert("melody".to_string(),
        CharacterSet::new()
            .simple("🎵")
            .icon("🎵")
            .bold("🎵")
    );

    characters.insert("song".to_string(),
        CharacterSet::new()
            .simple("🎵")
            .icon("🎵")
            .bold("🎵")
    );

    characters.insert("tune".to_string(),
        CharacterSet::new()
            .simple("🎵")
            .icon("🎵")
            .bold("🎵")
    );

    // 音乐符号
    characters.insert("treble_clef".to_string(),
        CharacterSet::new()
            .simple("𝄞")
            .icon("𝄞")
            .bold("𝄞")
    );

    characters.insert("bass_clef".to_string(),
        CharacterSet::new()
            .simple("𝄢")
            .icon("𝄢")
            .bold("𝄢")
    );

    characters.insert("sharp".to_string(),
        CharacterSet::new()
            .simple("♯")
            .icon("♯")
            .bold("♯")
    );

    characters.insert("flat".to_string(),
        CharacterSet::new()
            .simple("♭")
            .icon("♭")
            .bold("♭")
    );

    characters.insert("natural".to_string(),
        CharacterSet::new()
            .simple("♮")
            .icon("♮")
            .bold("♮")
    );

    characters.insert("rest".to_string(),
        CharacterSet::new()
            .simple("𝄻")
            .icon("𝄻")
            .bold("𝄻")
    );

    // 乐器
    characters.insert("piano".to_string(),
        CharacterSet::new()
            .simple("🎹")
            .icon("🎹")
            .bold("🎹")
    );

    characters.insert("guitar".to_string(),
        CharacterSet::new()
            .simple("🎸")
            .icon("🎸")
            .bold("🎸")
    );

    characters.insert("violin".to_string(),
        CharacterSet::new()
            .simple("🎻")
            .icon("🎻")
            .bold("🎻")
    );

    characters.insert("trumpet".to_string(),
        CharacterSet::new()
            .simple("🎺")
            .icon("🎺")
            .bold("🎺")
    );

    characters.insert("saxophone".to_string(),
        CharacterSet::new()
            .simple("🎷")
            .icon("🎷")
            .bold("🎷")
    );

    characters.insert("flute".to_string(),
        CharacterSet::new()
            .simple("🎵")
            .icon("🎵")
            .bold("🎵")
    );

    characters.insert("drum".to_string(),
        CharacterSet::new()
            .simple("🥁")
            .icon("🥁")
            .bold("🥁")
    );

    characters.insert("drums".to_string(),
        CharacterSet::new()
            .simple("🥁")
            .icon("🥁")
            .bold("🥁")
    );

    characters.insert("microphone".to_string(),
        CharacterSet::new()
            .simple("🎤")
            .icon("🎤")
            .bold("🎤")
    );

    characters.insert("mic".to_string(),
        CharacterSet::new()
            .simple("🎤")
            .icon("🎤")
            .bold("🎤")
    );

    characters.insert("speaker".to_string(),
        CharacterSet::new()
            .simple("🔊")
            .icon("🔊")
            .bold("🔊")
    );

    characters.insert("headphones".to_string(),
        CharacterSet::new()
            .simple("🎧")
            .icon("🎧")
            .bold("🎧")
    );

    // 播放控制
    characters.insert("play".to_string(),
        CharacterSet::new()
            .simple("▶")
            .icon("▶️")
            .bold("▶")
    );

    characters.insert("pause".to_string(),
        CharacterSet::new()
            .simple("⏸")
            .icon("⏸️")
            .bold("⏸")
    );

    characters.insert("stop".to_string(),
        CharacterSet::new()
            .simple("⏹")
            .icon("⏹️")
            .bold("⏹")
    );

    characters.insert("record".to_string(),
        CharacterSet::new()
            .simple("⏺")
            .icon("⏺️")
            .bold("⏺")
    );

    characters.insert("rewind".to_string(),
        CharacterSet::new()
            .simple("⏪")
            .icon("⏪")
            .bold("⏪")
    );

    characters.insert("fast_forward".to_string(),
        CharacterSet::new()
            .simple("⏩")
            .icon("⏩")
            .bold("⏩")
    );

    characters.insert("skip_back".to_string(),
        CharacterSet::new()
            .simple("⏮")
            .icon("⏮️")
            .bold("⏮")
    );

    characters.insert("skip_forward".to_string(),
        CharacterSet::new()
            .simple("⏭")
            .icon("⏭️")
            .bold("⏭")
    );

    // 音量控制
    characters.insert("volume_high".to_string(),
        CharacterSet::new()
            .simple("🔊")
            .icon("🔊")
            .bold("🔊")
    );

    characters.insert("volume_medium".to_string(),
        CharacterSet::new()
            .simple("🔉")
            .icon("🔉")
            .bold("🔉")
    );

    characters.insert("volume_low".to_string(),
        CharacterSet::new()
            .simple("🔈")
            .icon("🔈")
            .bold("🔈")
    );

    characters.insert("volume_mute".to_string(),
        CharacterSet::new()
            .simple("🔇")
            .icon("🔇")
            .bold("🔇")
    );

    characters.insert("mute".to_string(),
        CharacterSet::new()
            .simple("🔇")
            .icon("🔇")
            .bold("🔇")
    );

    // 音乐类型
    characters.insert("rock".to_string(),
        CharacterSet::new()
            .simple("🤘")
            .icon("🤘")
            .bold("🤘")
    );

    characters.insert("pop".to_string(),
        CharacterSet::new()
            .simple("🎵")
            .icon("🎵")
            .bold("🎵")
    );

    characters.insert("jazz".to_string(),
        CharacterSet::new()
            .simple("🎷")
            .icon("🎷")
            .bold("🎷")
    );

    characters.insert("classical".to_string(),
        CharacterSet::new()
            .simple("🎻")
            .icon("🎻")
            .bold("🎻")
    );

    characters.insert("blues".to_string(),
        CharacterSet::new()
            .simple("🎸")
            .icon("🎸")
            .bold("🎸")
    );

    characters.insert("country".to_string(),
        CharacterSet::new()
            .simple("🤠")
            .icon("🤠")
            .bold("🤠")
    );

    characters.insert("hip_hop".to_string(),
        CharacterSet::new()
            .simple("🎤")
            .icon("🎤")
            .bold("🎤")
    );

    characters.insert("electronic".to_string(),
        CharacterSet::new()
            .simple("🎛")
            .icon("🎛️")
            .bold("🎛")
    );

    characters.insert("reggae".to_string(),
        CharacterSet::new()
            .simple("🌴")
            .icon("🌴")
            .bold("🌴")
    );

    characters.insert("folk".to_string(),
        CharacterSet::new()
            .simple("🎵")
            .icon("🎵")
            .bold("🎵")
    );

    // 音乐表演
    characters.insert("concert".to_string(),
        CharacterSet::new()
            .simple("🎪")
            .icon("🎪")
            .bold("🎪")
    );

    characters.insert("show".to_string(),
        CharacterSet::new()
            .simple("🎭")
            .icon("🎭")
            .bold("🎭")
    );

    characters.insert("performance".to_string(),
        CharacterSet::new()
            .simple("🎭")
            .icon("🎭")
            .bold("🎭")
    );

    characters.insert("stage".to_string(),
        CharacterSet::new()
            .simple("🎭")
            .icon("🎭")
            .bold("🎭")
    );

    characters.insert("band".to_string(),
        CharacterSet::new()
            .simple("🎸")
            .icon("🎸")
            .bold("🎸")
    );

    characters.insert("singer".to_string(),
        CharacterSet::new()
            .simple("🎤")
            .icon("🎤")
            .bold("🎤")
    );

    characters.insert("artist".to_string(),
        CharacterSet::new()
            .simple("🎨")
            .icon("🎨")
            .bold("🎨")
    );

    characters.insert("dj".to_string(),
        CharacterSet::new()
            .simple("🎛")
            .icon("🎛️")
            .bold("🎛")
    );

    // 音乐技术
    characters.insert("studio".to_string(),
        CharacterSet::new()
            .simple("🎙")
            .icon("🎙️")
            .bold("🎙")
    );

    characters.insert("recording".to_string(),
        CharacterSet::new()
            .simple("🎙")
            .icon("🎙️")
            .bold("🎙")
    );

    characters.insert("mix".to_string(),
        CharacterSet::new()
            .simple("🎛")
            .icon("🎛️")
            .bold("🎛")
    );

    characters.insert("mixing".to_string(),
        CharacterSet::new()
            .simple("🎛")
            .icon("🎛️")
            .bold("🎛")
    );

    characters.insert("master".to_string(),
        CharacterSet::new()
            .simple("🎚")
            .icon("🎚️")
            .bold("🎚")
    );

    characters.insert("mastering".to_string(),
        CharacterSet::new()
            .simple("🎚")
            .icon("🎚️")
            .bold("🎚")
    );

    // 音乐格式
    characters.insert("mp3".to_string(),
        CharacterSet::new()
            .simple("🎵")
            .icon("🎵")
            .bold("🎵")
    );

    characters.insert("wav".to_string(),
        CharacterSet::new()
            .simple("🎵")
            .icon("🎵")
            .bold("🎵")
    );

    characters.insert("flac".to_string(),
        CharacterSet::new()
            .simple("🎵")
            .icon("🎵")
            .bold("🎵")
    );

    characters.insert("cd".to_string(),
        CharacterSet::new()
            .simple("💿")
            .icon("💿")
            .bold("💿")
    );

    characters.insert("vinyl".to_string(),
        CharacterSet::new()
            .simple("💿")
            .icon("💿")
            .bold("💿")
    );

    characters.insert("cassette".to_string(),
        CharacterSet::new()
            .simple("📼")
            .icon("📼")
            .bold("📼")
    );

    // 音乐情感
    characters.insert("happy".to_string(),
        CharacterSet::new()
            .simple("😊")
            .icon("😊")
            .bold("😊")
    );

    characters.insert("sad".to_string(),
        CharacterSet::new()
            .simple("😢")
            .icon("😢")
            .bold("😢")
    );

    characters.insert("energetic".to_string(),
        CharacterSet::new()
            .simple("⚡")
            .icon("⚡")
            .bold("⚡")
    );

    characters.insert("calm".to_string(),
        CharacterSet::new()
            .simple("😌")
            .icon("😌")
            .bold("😌")
    );

    characters.insert("romantic".to_string(),
        CharacterSet::new()
            .simple("💕")
            .icon("💕")
            .bold("💕")
    );

    characters.insert("dramatic".to_string(),
        CharacterSet::new()
            .simple("🎭")
            .icon("🎭")
            .bold("🎭")
    );

    characters
}
